#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

void includar (){
  
  //abrir fichero intermedio
  FILE * antiguo = fopen("final.o", "r");
  FILE * nuevo   = fopen("final.ens", "w");
  FILE * temp    = NULL;
  //leer y copiar hasta el final
  char *linea1 = NULL;
  char *linea2 = NULL;
  size_t len1 = 0;
  ssize_t read1 = 0;
  size_t len2 = 0;
  ssize_t read2 = 0;


  while ((read1 = getline(&linea1, &len1, antiguo)) != -1) {
	  if (strncmp("#include ", linea1, 9) == 0){
		  //printf("Incluyendo el archivo: \n");
		  //si encuentra #include hacer el append
		  char * apendice = &linea1[9];
		  apendice[strlen(apendice)-1] = '\0';
		  //printf("%s\n", apendice);
		  //abre el archivo a incluir
		  temp = fopen(apendice, "r");
		  //leer y copiar hasta el final
		  while ((read2 = getline(&linea2, &len2, temp)) != -1) {
			  //printf("%s\n", linea);
			  fprintf(nuevo, "%s", linea2);
		  }
		  //cerrar los ficheros
		  fclose (temp);
	  }else{
		  fprintf(nuevo, "%s", linea1);
	  }
  }
  //cerrar los ficheros
  fclose (antiguo);
  fclose (nuevo);
  //renombrar archivos
}

int main(int argc, char *argv[]) {
	includar();
}
